# 如果当前账户有相关404，进行操作，如果没有则告警
# 判断metadata有没有开盒子
#   如果开盒子了，判断价值
#       如果价值大，结束，并告警
#       如果价值小，通过ERC20的方式转账给自己
#   如果没有开盒子，调用API接口开盒子，开完之后进行上述步骤
import requests

class ERC404Query:
    def __init__(self, w3, abi, nft_address):
        self.nft_abi = abi
        self.nft = w3.eth.contract(address=nft_address, abi=abi)

    def get_token_list(self, address, number):
        token_list = []
        for i in range(number):
            token_list.append(self.nft.functions.tokenOfOwnerByIndex(address, i).call())
        return token_list

    def get_formatted_content(self, token_id):
        url = self.nft.functions.tokenURI(token_id).call()
        return requests.get(url).json()